package com.common.auth.manager;

import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import com.common.api.annontation.ServiceLog;
import com.common.util.AESUtil;

/**
 * @author ficus
 * 加密管理
 */
@Component
@ServiceLog
public class PasswordManager {

	@Value("${auth.user.default-password:1234}")
	private String defaultPassword;
	
	/**
	 * 验证密码是否正确
	 * @param md5Text  旧密码
	 * @param cryPassword  新密码
	 * @param salt   用户编码UserCode
	 * @return
	 */
	public boolean validataPassword(String md5Text, String cryPassword, String salt) {
		if(StringUtils.isEmpty(cryPassword)) {
			return false;
		}
		// 用户输入的旧密码(md5Text)，加盐(salt，即用户编码userCode)，得到加盐后的旧密码。
		String md5Pass=AESUtil.encrypt(md5Text, salt);
		if (cryPassword.equals(md5Pass)) {
			return true;
		}
		return false;
	}

	/**
	 * 生成加密密码
	 * 
	 * @param password 为空取默认密码,或者前台加密后的密码
	 * @param salt     加盐
	 * @return 加密后的字符串
	 */
	public String buildCryPassword(String password, String salt) {
		String plainText=password;
		if (password == null) {
			plainText= DigestUtils.md5Hex(defaultPassword);
		}
		String cryPass=AESUtil.encrypt(plainText, salt);
		return cryPass;
	}
}
